Upscaling triangulation scanner images to reduce noise

ABSTRACT

Examples described herein provide a method that includes performing, by a processing device, using a neural network, pattern recognition on an image to recognize a feature in the image. The method further includes performing, by the processing device, upscaling of the image to increase a resolution of the image while maintaining the feature to generate an upscaled image.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication No. 63/146,268 filed Feb. 5, 2021, the disclosure of whichis incorporated herein by reference in its entirety.

BACKGROUND

Embodiments of the present disclosure generally relate to detectingdisplacements and/or defects in a point cloud and, in particular, totechniques for upscaling triangulation scanner images to reduce noise.

The acquisition of three-dimensional coordinates of an object or anenvironment is known. Various techniques may be used, such astime-of-flight (TOF) or triangulation methods, for example. A TOF systemsuch as a laser tracker, for example, directs a beam of light such as alaser beam toward a retroreflector target positioned over a spot to bemeasured. An absolute distance meter (ADM) is used to determine thedistance from the distance meter to the retroreflector based on thelength of time it takes the light to travel to the spot and return. Bymoving the retroreflector target over the surface of the object, thecoordinates of the object surface may be ascertained. Another example ofa TOF system is a laser scanner that measures a distance to a spot on adiffuse surface with an ADM that measures the time for the light totravel to the spot and return. TOF systems have advantages in beingaccurate, but in some cases may be slower than systems that project apattern such as a plurality of light spots simultaneously onto thesurface at each instant in time.

In contrast, a triangulation system, such as a scanner, projects eithera line of light (e.g., from a laser line probe) or a pattern of light(e.g., from a structured light) onto the surface. In this system, acamera is coupled to a projector in a fixed mechanical relationship. Thelight/pattern emitted from the projector is reflected off of the surfaceand detected by the camera. Since the camera and projector are arrangedin a fixed relationship, the distance to the object may be determinedfrom captured images using trigonometric principles. Triangulationsystems provide advantages in quickly acquiring coordinate data overlarge areas.

In some systems, during the scanning process, the scanner acquires, atdifferent times, a series of images of the patterns of light formed onthe object surface. These multiple images are then registered relativeto each other so that the position and orientation of each imagerelative to the other images are known. Where the scanner is handheld,various techniques have been used to register the images. One commontechnique uses features in the images to match overlapping areas ofadjacent image frames. This technique works well when the object beingmeasured has many features relative to the field of view of the scanner.However, if the object contains a relatively large flat or curvedsurface, the images may not properly register relative to each other.

Accordingly, while existing 3D scanners are suitable for their intendedpurposes, what is needed is a 3D scanner having certain features of oneor more embodiments of the present invention.

SUMMARY

According to one or more examples, a method is provided that includesperforming, by a processing device, using a neural network, patternrecognition on an image to recognize a feature in the image. The methodfurther includes performing, by the processing device, upscaling of theimage to increase a resolution of the image while maintaining thefeature to generate an upscaled image.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include capturing, usinga three-dimensional scanner, the image by scanning an environment.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include training theneural network, using a training set of images, to perform the patternrecognition and the upscaling.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that each set ofthe training set of images includes an original image of a laserprojection pattern and a downscaled image of the laser projectionpattern.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include comparing thedownscaled image to the original image.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the trainingset of images is associated with one environment.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the trainingset of images is associated with at least two environments.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that theprocessing device is disposed in a three-dimensional scanner such thatperforming the image recognition and performing the upscaling areperformed by the three-dimensional scanner.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the neuralnetwork includes an encoder and a decoder.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the neuralnetwork utilizes a long short-term memory.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the featureis at least one of a pattern, a color, or a shape.

According to one or more examples, a method is provided that includestraining a neural network to perform image upscaling on images capturedby a three-dimensional triangulation scanner. The method furtherincludes capturing an image using the three-dimensional triangulationscanner. The method further includes performing, by a processing deviceusing the neural network, pattern recognition on the image. The methodfurther includes performing, by the processing device using the neuralnetwork, upscaling on the image without manipulating image dataassociated with the image to generate an upscaled image.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that capturingthe image includes scanning, by the three-dimensional triangulationscanner, an environment.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that training theneural network includes using a training set of images.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that each set ofthe training set of images includes an original image of a laserprojection pattern and a downscaled image of the laser projectionpattern.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the trainingfurther includes: comparing the downscaled image to the original image.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the trainingset of images is associated with one environment.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the trainingset of images is associated with at least two environments.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that theprocessing device is disposed in the three-dimensional triangulationscanner such that performing the image recognition and performing theupscaling are performed by the three-dimensional triangulation scanner.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the neuralnetwork includes an encoder and a decoder.

In addition to one or more of the features described above, or as analternative, further embodiments of the method include that the neuralnetwork utilizes a long short-term memory.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter, which is regarded as the invention, is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The foregoing and other features, and advantages ofembodiments of the invention are apparent from the following detaileddescription taken in conjunction with the accompanying drawings inwhich:

FIG. 1 depicts a system for scanning an environment according to one ormore embodiments described herein;

FIG. 2 depicts an example image of a laser projection pattern accordingto one or more embodiments described herein;

FIG. 3 depicts a portion of the image of FIG. 2 showing a laser dot thathas been enlarged according to one or more embodiments described herein;

FIG. 4 depicts the portion from FIG. 3 after upscaling has been appliedaccording to one or more embodiments described herein;

FIG. 5 depicts a flow diagram of a method for upscaling triangulationscanner images to reduce noise according to one or more embodimentsdescribed herein;

FIGS. 6A and 6B depict an autoencoder according to one or moreembodiments described herein;

FIGS. 7, 8, 9, 10, and 11 are isometric, partial isometric, partial top,partial front, and second partial top views, respectively, of atriangulation scanner according to one or more embodiments describedherein;

FIG. 12A is a schematic view of a triangulation scanner having aprojector, a first camera, and a second camera according to one or moreembodiments described herein;

FIG. 12B is a schematic representation of a triangulation scanner havinga projector that projects and uncoded pattern of uncoded spots, receivedby a first camera, and a second camera according to one or moreembodiments described herein;

FIG. 12C is an example of an uncoded pattern of uncoded spots accordingto one or more embodiments described herein;

FIG. 12D is a representation of one mathematical method that might beused to determine a nearness of intersection of three lines according toone or more embodiments described herein;

FIG. 12E is a list of elements in a method for determining 3Dcoordinates of an object according to one or more embodiments describedherein;

FIG. 13 is an isometric view of a triangulation scanner having aprojector and two cameras arranged in a triangle according to one ormore embodiments described herein;

FIG. 14 is a schematic illustration of intersecting epipolar lines inepipolar planes for a combination of projectors and cameras according toone or more embodiments described herein;

FIGS. 15A, 15B, 15C, 15D, 15E are schematic diagrams illustratingdifferent types of projectors according to one or more embodimentsdescribed herein;

FIG. 16A is an isometric view of a triangulation scanner having twoprojectors and one camera according to one or more embodiments describedherein;

FIG. 16B is an isometric view of a triangulation scanner having threecameras and one projector according to one or more embodiments describedherein;

FIG. 16C is an isometric view of a triangulation scanner having oneprojector and two cameras and further including a camera to assist inregistration or colorization according to one or more embodimentsdescribed herein;

FIG. 17A illustrates a triangulation scanner used to measure an objectmoving on a conveyor belt according to one or more embodiments describedherein;

FIG. 17B illustrates a triangulation scanner moved by a robot endeffector, according to one or more embodiments described herein; and

FIG. 18 illustrates front and back reflections off a relativelytransparent material such as glass according to one or more embodimentsdescribed herein.

DETAILED DESCRIPTION

The technical solutions described herein generally relate to techniquesfor upscaling triangulation scanner images to reduce noise. Athree-dimensional (3D) scanning device or “scanner” as depicted in FIG.1 can be used to generate 3D points (referred to as a “point cloud”).

In particular, FIG. 1 depicts a system 100 for scanning an environmentaccording to one or more embodiments described herein. The system 100includes a computing device 110 coupled with a scanner 120, which can bea 3D scanner or another suitable scanner. The coupling facilitates wiredand/or wireless communication between the computing device 110 and thescanner 120. The scanner 120 includes a set of sensors 122. The set ofsensors 122 can include different types of sensors, such as LIDAR sensor122A (light detection and ranging), RGB-D camera 122B(red-green-blue-depth), and wide-angle/fisheye camera 122C, and othertypes of sensors. The scanner 120 can also include an inertialmeasurement unit (IMU) 126 to keep track of a 3D movement andorientation of the scanner 120. The scanner 120 can further include aprocessor 124 that, in turn, includes one or more processing units. Theprocessor 124 controls the measurements performed using the set ofsensors 122. In one or more examples, the measurements are performedbased on one or more instructions received from the computing device110. In an embodiment, the LIDAR sensor 122A is a two-dimensional (2D)scanner that sweeps a line of light in a plane (e.g. a plane horizontalto the floor).

According to one or more embodiments described herein, the scanner 120is a dynamic machine vision sensor (DMVS) scanner manufactured by FARO®Technologies, Inc. of Lake Mary, Fla., USA. DMVS scanners are discussedfurther with reference to FIGS. 11A-18. In an embodiment, the scanner120 may be that described in commonly owned United States PatentPublication 2018/0321383 entitled Triangulation Scanner having FlatGeometry and Projecting Uncoded Spots, the contents of which areincorporated by reference herein. It should be appreciated that thetechniques described herein are not limited to use with DMVS scannersand that other types of 3D scanners can be used.

The computing device 110 can be a desktop computer, a laptop computer, atablet computer, a phone, or any other type of computing device that cancommunicate with the scanner 120.

In one or more embodiments, the computing device 110 generates a pointcloud 130 (e.g., a 3D point cloud) of the environment being scanned bythe scanner 120 using the set of sensors 122. The point cloud 130 is aset of data points (i.e., a collection of three-dimensional coordinates)that correspond to surfaces of objects in the environment being scannedand/or of the environment itself. According to one or more embodimentsdescribed herein, a display (not shown) displays a live view of thepoint cloud 130.

Turning now to an overview of technologies that are more specificallyrelevant to one or more embodiments described herein, triangulationscanners (see, e.g., the scanner 120 of FIG. 1 and/or the triangulationscanner 1101 of FIGS. 11A-11E) generally include at least one projectorand at least one camera. The projector and camera are separated by abaseline distance. Images of the laser projection pattern are used togenerate 3D points. An example image 200 of a laser projection patternis depicted in FIG. 2. Due to the nature of triangulation scanners, 3Ddata is typically very noise on longer distances.

For scanners such as the triangulation scanner 1101, a typical 2-sigmanoise might be 500 m at a 500 mm measurement distance. In someapplications, sensitivity for finding defects may be less than the2-sigma noise (e.g., less than 500 m such as about 300 m). This preventcan prevent the use of such scanners for certain applications. Thereason for this is a combination of camera and laser noise. For cameranoise, pixel size plays an important role. For example, FIG. 3 depicts aportion 300 of the image 200 of FIG. 3 showing a laser dot 302 that hasbeen enlarged. In this example, the portion 300 is enlarged by about1300%, although this enlargement amount is not intended to be limitedand is only exemplary. As can be seen, the laser dot 302 is pixelated,and the individual pixels are easy to identify. To minimize this effect,pixel size must be decreased. To do this, the image 200 is upscaled asshown in FIG. 4. This can be accomplished in various ways, including byreplacing the camera of the scanner with a model that captures images ina higher resolution or by upscaling the image in software.

Substituting or replacing the camera in a scanner is a financiallyexpensive approach, and upscaling the image in software is acomputationally expensive approach. Upscaling using conventionaltechniques is computational expensive driven largely by interpolatingbetween the pixels. For example, in FIG. 4, an off-the-shelf photoediting application was used to perform the upscaling on the image 200to generate the portion 400. However, when using triangulation scannerssuch as a DMVS (which captures images, for example, at about 70 Hz),high performance is desired, and generating 3D data occupies a largeamount of processing time. Upscaling and interpolating the images usingconventional algorithm-based techniques would have a large negativeimpact on the processing time and thus impact the image capture speed,which would be reduced undesirably. The embodiments described hereinprovide for software-based upscaling without reducing image capturespeed of the scanner by using artificial intelligence to upscale andinterpolate images.

FIG. 5 depicts a flow diagram of a method 500 for upscalingtriangulation scanner images to reduce noise according to one or moreembodiments described herein. The method 500 can be performed by anysuitable processing system, processing device, scanner, etc. such as theprocessing systems, processing devices, and scanners described herein.For example, the processor 124 is disposed in a three-dimensionalscanner (e.g., the scanner 120) such that performing the imagerecognition and performing the upscaling are performed by thethree-dimensional scanner.

According to one or more embodiments described herein, the techniquesfor upscaling triangulation scanner images provided herein are a fullyautomated process that uses machine learning to perform patternrecognition and determine how edges and shapes within an image shouldlook while increasing the overall size of an image. This process hasbeen trained on large datasets, allowing it to accurately clear upimages. In particular, the image data is not manipulated; rather thepatterns, colors, and shapes in the image are recognized. This isreferred to as a “raw data pattern.” After the raw data pattern isrecognized in the image, a neural network is applied to deconvolute thepixel intensity. If this were performed conventionally, in a largerimage with blurry edges and colors would result (see, e.g., FIG. 3).However, by training a neural network to perform the deconvolution onlyon the rasterization of the image, the real image is maintained andenhanced by presenting it better to the user and/or for furtherprocessing. This results in more pixels to work with and unmanipulateddata, which in turns improves precision, such as for a laser raster tomap point-to-pixel approach. Accordingly, faster and better results areachieved. The method 500 is now described in more detail.

At block 502, a neural network is trained to perform image upscaling onimages captured by a 3D triangulation scanner (e.g., the scanner 120 ofFIG. 1, the triangulation scanner 1101 of FIGS. 7, 8, 9, 10, and 11,etc.). As described herein, a neural network can be trained to performimage upscaling, which is useful for reducing noise in scanned images,for example. More specifically, the present techniques can incorporateand utilize rule-based decision making and artificial intelligence (AI)reasoning to accomplish the various operations described herein, namelyupscaling images, such as scanned images from triangulation scanners.The phrase “machine learning” broadly describes a function of electronicsystems that learn from data. A machine learning system, engine, ormodule can include a trainable machine learning algorithm that can betrained, such as in an external cloud environment, to learn functionalrelationships between inputs and outputs that are currently unknown, andthe resulting model can be used for automatically upscaling images. Inone or more embodiments, machine learning functionality can beimplemented using an artificial neural network (ANN) having thecapability to be trained to perform a currently unknown function. Inmachine learning and cognitive science, ANNs are a family of statisticallearning models inspired by the biological neural networks of animals,and in particular the brain. ANNs can be used to estimate or approximatesystems and functions that depend on a large number of inputs.Convolutional neural networks (CNN) are a class of deep, feed-forwardANN that are particularly useful at analyzing visual imagery.

ANNs can be embodied as so-called “neuromorphic” systems ofinterconnected processor elements that act as simulated “neurons” andexchange “messages” between each other in the form of electronicsignals. Similar to the so-called “plasticity” of synapticneurotransmitter connections that carry messages between biologicalneurons, the connections in ANNs that carry electronic messages betweensimulated neurons are provided with numeric weights that correspond tothe strength or weakness of a given connection. The weights can beadjusted and tuned based on experience, making ANNs adaptive to inputsand capable of learning. For example, an ANN for handwriting recognitionis defined by a set of input neurons that can be activated by the pixelsof an input image. After being weighted and transformed by a functiondetermined by the network's designer, the activation of these inputneurons are then passed to other downstream neurons, which are oftenreferred to as “hidden” neurons. This process is repeated until anoutput neuron is activated. The activated output neuron determines whichcharacter was read. It should be appreciated that these same techniquescan be applied in the case of upscaling images.

To train the neural network, set of images (referred to as a trainingset of images) are created using, for example, a photo editingapplication. The training set of images includes pairs of images: anoriginal image of a laser projection pattern and a downscaled image ofthe laser projection pattern. The downscaled image is a manuallyworsened version of the original image. For example, if the originalimage is a 1024×1024 image, the downscaled image is manually worsened to256×256 and is then compared against the original image.

A neural network can be designed with a given depth and architectureparticular to a specific scanner, such as a DMVS or other suitablescanner. According to one or more embodiments described herein, anautoencoder and autodecoder technique is applied with an intermediatelong short-term memory (LSTM) layer chain between the encoding anddecoding blocks. For example, FIGS. 6A and 6B depict an autoencoder 602that implements machine learning according to one or more embodimentsdescribed herein. As shown in FIG. 6A, the autoencoder 602 receives ascanned image 601 as an input and produces an upscaled image 603 as anoutput. An autoencoder, such as the autoencoder 602, uses a neuralnetwork that learns in an unsupervised way. Autoencoders can be used ina variety of applications, such as dimensionality reduction, anomalydetection, denoising, etc. According to one or more embodimentsdescribed herein, the autoencoder 602 can be trained to recognizecertain information in input data (e.g., the scanned image 601). As oneexample, an autoencoder can be trained to recognize real information,such as handwriting, in a noisy image and to produce the recognizedinformation without surrounding noise as an upscaled image (e.g., theupscaled image 603). In examples, the output is a binarized image or animage that is capable of being binarized. An autoencoder can be trainedto find real information in images with different segments withdifferent gray value levels and process this segment information.

FIG. 6B depicts the autoencoder 602 in more detail. In this example, theautoencoder 602 includes an encoder 610 that receives the scanned image601 and a decoder 620 that produces the upscaled image 602. The encoder610 includes an input layer 611 (labeled as “X”), and the decoder 620includes an output layer 621 (labeled as “X′”). The input layers 611 andthe output layer 621 use an activation function, which may benon-linear. An example of an activation function is a rectified linearunit (ReLU). Each of the encoder 610 and the decoder 620 utilizes code630 (labeled as “h”) in a latent space between the input layer 611 andthe output layer 621 to perform denoising. In some examples, the code630 can include the intermediate LSTM layer chain between the encodingand decoding blocks.

In an example, the neural network is trained all around purposes. Thatis, a model can be trained on images/data from multiple sources (e.g.,customers) to produce a general model applicable across multiple datasets. In another example, the neural network is trained for a particularscanning implementation, which may be a perfect fit for a particularcustomer based on that customer's images/data, since the trained modelis a perfect fit for the customer's particular environment/use.

After the neural network is trained, it can be used as an evaluationscript to evaluate scanned images from the scanner. The scanned images,which include a laser pattern, are upscaled using the trained neuralnetwork. The benefit of this approach is high precision, taken intoconsideration that the overhead created in the chain by the upscalingstep can be done in real-time or near-real-time. For example, at block504 of the method 500, the 3D triangulation scanner captures an image asdescribed herein. Once the image is captured, the trained neural networkis applied to upscale the image at block 506 and 506.

Particularly, at block 506, the image is input into the neural network,and the neural network performs pattern recognition on the image. Thiscan include recognizing a pattern, a color, a shape, etc. in the image.For example, in FIG. 2, the laser dot 302 is recognized as having acircular shape. At block 508, the neural network is used to performupscaling of the image to increase the resolution of the image whilemaintaining the pattern, color, shape, etc. of the original image togenerate an upscaled image (see, e.g., FIG. 5). As shown in FIG. 5, theupscaled image is a higher resolution compared to a non-upscaled image(see, e.g., FIG. 4).

Additional processes also may be included, and it should be understoodthat the process depicted in FIG. 5 represents an illustration, and thatother processes may be added or existing processes may be removed,modified, or rearranged without departing from the scope of the presentdisclosure.

Turning now to FIG. 7, it may be desired to capture three-dimensional(3D) measurements of objects. For example, the point cloud 130 of FIG. 1may be captured by the scanner 120. One such example of the scanner 120is now described. Such example scanner is referred to as a DVMS scannerby FARO®.

In an embodiment illustrated in FIGS. 7, 8, 9, 10, and 11, atriangulation scanner 1101 includes a body 1105, a projector 1120, afirst camera 1130, and a second camera 1140. In an embodiment, theprojector optical axis 1122 of the projector 1120, the first-cameraoptical axis 1132 of the first camera 1130, and the second-cameraoptical axis 1142 of the second camera 1140 all lie on a common plane1150, as shown in FIGS. 9, 10. In some embodiments, an optical axispasses through a center of symmetry of an optical system, which might bea projector or a camera, for example. For example, an optical axis maypass through a center of curvature of lens surfaces or mirror surfacesin an optical system. The common plane 1150, also referred to as a firstplane 1150, extends perpendicular into and out of the paper in FIG. 10.

In an embodiment, the body 1105 includes a bottom support structure1106, a top support structure 1107, spacers 1108, camera mounting plates1109, bottom mounts 1110, dress cover 1111, windows 1112 for theprojector and cameras, Ethernet connectors 1113, and GPIO connector1114. In addition, the body includes a front side 1115 and a back side1116. In an embodiment, the bottom support structure 1106 and the topsupport structure 1107 are flat plates made of carbon-fiber compositematerial. In an embodiment, the carbon-fiber composite material has alow coefficient of thermal expansion (CTE). In an embodiment, thespacers 1108 are made of aluminum and are sized to provide a commonseparation between the bottom support structure 1106 and the top supportstructure 1107.

In an embodiment, the projector 1120 includes a projector body 1124 anda projector front surface 1126. In an embodiment, the projector 1120includes a light source 1125 that attaches to the projector body 1124that includes a turning mirror and a diffractive optical element (DOE),as explained herein below with respect to FIGS. 15A, 15B, 15C. The lightsource 1125 may be a laser, a superluminescent diode, or a partiallycoherent LED, for example. In an embodiment, the DOE produces an arrayof spots arranged in a regular pattern. In an embodiment, the projector1120 emits light at a near infrared wavelength.

In an embodiment, the first camera 1130 includes a first-camera body1134 and a first-camera front surface 36. In an embodiment, the firstcamera includes a lens, a photosensitive array, and camera electronics.The first camera 1130 forms on the photosensitive array a first image ofthe uncoded spots projected onto an object by the projector 1120. In anembodiment, the first camera responds to near infrared light.

In an embodiment, the second camera 1140 includes a second-camera body1144 and a second-camera front surface 1146. In an embodiment, thesecond camera includes a lens, a photosensitive array, and cameraelectronics. The second camera 1140 forms a second image of the uncodedspots projected onto an object by the projector 1120. In an embodiment,the second camera responds to light in the near infrared spectrum. In anembodiment, a processor 1102 is used to determine 3D coordinates ofpoints on an object according to methods described herein below. Theprocessor 1102 may be included inside the body 1105 or may be externalto the body. In further embodiments, more than one processor is used. Instill further embodiments, the processor 1102 may be remotely locatedfrom the triangulation scanner.

FIG. 11 is a top view of the triangulation scanner 1101. A projector ray1128 extends along the projector optical axis from the body of theprojector 1124 through the projector front surface 1126. In doing so,the projector ray 1128 passes through the front side 1115. Afirst-camera ray 1138 extends along the first-camera optical axis 1132from the body of the first camera 1134 through the first-camera frontsurface 1136. In doing so, the front-camera ray 1138 passes through thefront side 1115. A second-camera ray 1148 extends along thesecond-camera optical axis 1142 from the body of the second camera 1144through the second-camera front surface 1146. In doing so, thesecond-camera ray 1148 passes through the front side 1115.

FIG. 12A shows elements of a triangulation scanner 1200 a that might,for example, be the triangulation scanner 1101 shown in FIGS. 7-11. Inan embodiment, the triangulation scanner 1200 a includes a projector1250, a first camera 1210, and a second camera 1230. In an embodiment,the projector 1250 creates a pattern of light on a pattern generatorplane 1252. An exemplary corrected point 1253 on the pattern projects aray of light 1251 through the perspective center 1258 (point D) of thelens 1254 onto an object surface 1270 at a point 1272 (point F). Thepoint 1272 is imaged by the first camera 1210 by receiving a ray oflight from the point 1272 through the perspective center 1218 (point E)of the lens 1214 onto the surface of a photosensitive array 1212 of thecamera as a corrected point 1220. The point 1220 is corrected in theread-out data by applying a correction value to remove the effects oflens aberrations. The point 1272 is likewise imaged by the second camera1230 by receiving a ray of light from the point 1272 through theperspective center 1238 (point C) of the lens 1234 onto the surface ofthe photosensitive array 1232 of the second camera as a corrected point1235. It should be understood that as used herein any reference to alens includes any type of lens system whether a single lens or multiplelens elements, including an aperture within the lens system. It shouldbe understood that any reference to a projector in this document refersnot only to a system projecting with a lens or lens system an imageplane to an object plane. The projector does not necessarily have aphysical pattern-generating plane 1252 but may have any other set ofelements that generate a pattern. For example, in a projector having aDOE, the diverging spots of light may be traced backward to obtain aperspective center for the projector and also to obtain a referenceprojector plane that appears to generate the pattern. In most cases, theprojectors described herein propagate uncoded spots of light in anuncoded pattern. However, a projector may further be operable to projectcoded spots of light, to project in a coded pattern, or to project codedspots of light in a coded pattern. In other words, in some aspects ofthe disclosed embodiments, the projector is at least operable to projectuncoded spots in an uncoded pattern but may in addition project in othercoded elements and coded patterns.

In an embodiment where the triangulation scanner 1200 a of FIG. 12A is asingle-shot scanner that determines 3D coordinates based on a singleprojection of a projection pattern and a single image captured by eachof the two cameras, then a correspondence between the projector point1253, the image point 1220, and the image point 1235 may be obtained bymatching a coded pattern projected by the projector 1250 and received bythe two cameras 1210, 1230. Alternatively, the coded pattern may bematched for two of the three elements—for example, the two cameras 1210,1230 or for the projector 1250 and one of the two cameras 1210 or 1230.This is possible in a single-shot triangulation scanner because ofcoding in the projected elements or in the projected pattern or both.

After a correspondence is determined among projected and imagedelements, a triangulation calculation is performed to determine 3Dcoordinates of the projected element on an object. For FIG. 12A, theelements are uncoded spots projected in a uncoded pattern. In anembodiment, a triangulation calculation is performed based on selectionof a spot for which correspondence has been obtained on each of twocameras. In this embodiment, the relative position and orientation ofthe two cameras is used. For example, the baseline distance B3 betweenthe perspective centers 1218 and 1238 is used to perform a triangulationcalculation based on the first image of the first camera 1210 and on thesecond image of the second camera 1230. Likewise, the baseline B1 isused to perform a triangulation calculation based on the projectedpattern of the projector 1250 and on the second image of the secondcamera 1230. Similarly, the baseline B2 is used to perform atriangulation calculation based on the projected pattern of theprojector 1250 and on the first image of the first camera 1210. In anembodiment, the correspondence is determined based at least on anuncoded pattern of uncoded elements projected by the projector, a firstimage of the uncoded pattern captured by the first camera, and a secondimage of the uncoded pattern captured by the second camera. In anembodiment, the correspondence is further based at least in part on aposition of the projector, the first camera, and the second camera. In afurther embodiment, the correspondence is further based at least in parton an orientation of the projector, the first camera, and the secondcamera.

The term “uncoded element” or “uncoded spot” as used herein refers to aprojected or imaged element that includes no internal structure thatenables it to be distinguished from other uncoded elements that areprojected or imaged. The term “uncoded pattern” as used herein refers toa pattern in which information is not encoded in the relative positionsof projected or imaged elements. For example, one method for encodinginformation into a projected pattern is to project a quasi-randompattern of “dots” in which the relative position of the dots is knownahead of time and can be used to determine correspondence of elements intwo images or in a projection and an image. Such a quasi-random patterncontains information that may be used to establish correspondence amongpoints and hence is not an example of a uncoded pattern. An example ofan uncoded pattern is a rectilinear pattern of projected patternelements.

In an embodiment, uncoded spots are projected in an uncoded pattern asillustrated in the scanner system 12100 of FIG. 12B. In an embodiment,the scanner system 12100 includes a projector 12110, a first camera12130, a second camera 12140, and a processor 12150. The projectorprojects an uncoded pattern of uncoded spots off a projector referenceplane 12114. In an embodiment illustrated in FIGS. 12B and 12C, theuncoded pattern of uncoded spots is a rectilinear array 12111 ofcircular spots that form illuminated object spots 12121 on the object12120. In an embodiment, the rectilinear array of spots 12111 arrivingat the object 12120 is modified or distorted into the pattern ofilluminated object spots 12121 according to the characteristics of theobject 12120. An exemplary uncoded spot 12112 from within the projectedrectilinear array 12111 is projected onto the object 12120 as a spot12122. The direction from the projector spot 12112 to the illuminatedobject spot 12122 may be found by drawing a straight line 12124 from theprojector spot 12112 on the reference plane 12114 through the projectorperspective center 12116. The location of the projector perspectivecenter 12116 is determined by the characteristics of the projectoroptical system.

In an embodiment, the illuminated object spot 12122 produces a firstimage spot 12134 on the first image plane 12136 of the first camera12130. The direction from the first image spot to the illuminated objectspot 12122 may be found by drawing a straight line 12126 from the firstimage spot 12134 through the first camera perspective center 12132. Thelocation of the first camera perspective center 12132 is determined bythe characteristics of the first camera optical system.

In an embodiment, the illuminated object spot 12122 produces a secondimage spot 12144 on the second image plane 12146 of the second camera12140. The direction from the second image spot 12144 to the illuminatedobject spot 12122 may be found by drawing a straight line 12126 from thesecond image spot 12144 through the second camera perspective center12142. The location of the second camera perspective center 12142 isdetermined by the characteristics of the second camera optical system.

In an embodiment, a processor 12150 is in communication with theprojector 12110, the first camera 12130, and the second camera 12140.Either wired or wireless channels 12151 may be used to establishconnection among the processor 12150, the projector 12110, the firstcamera 12130, and the second camera 12140. The processor may include asingle processing unit or multiple processing units and may includecomponents such as microprocessors, field programmable gate arrays(FPGAs), digital signal processors (DSPs), and other electricalcomponents. The processor may be local to a scanner system that includesthe projector, first camera, and second camera, or it may be distributedand may include networked processors. The term processor encompasses anytype of computational electronics and may include memory storageelements.

FIG. 12E shows elements of a method 12180 for determining 3D coordinatesof points on an object. An element 12182 includes projecting, with aprojector, a first uncoded pattern of uncoded spots to form illuminatedobject spots on an object. FIGS. 12B, 12C illustrate this element 12182using an embodiment 12100 in which a projector 12110 projects a firstuncoded pattern of uncoded spots 12111 to form illuminated object spots12121 on an object 12120.

A method element 12184 includes capturing with a first camera theilluminated object spots as first-image spots in a first image. Thiselement is illustrated in FIG. 12B using an embodiment in which a firstcamera 12130 captures illuminated object spots 12121, including thefirst-image spot 12134, which is an image of the illuminated object spot12122. A method element 12186 includes capturing with a second camerathe illuminated object spots as second-image spots in a second image.This element is illustrated in FIG. 12B using an embodiment in which asecond camera 140 captures illuminated object spots 12121, including thesecond-image spot 12144, which is an image of the illuminated objectspot 12122.

A first aspect of method element 12188 includes determining with aprocessor 3D coordinates of a first collection of points on the objectbased at least in part on the first uncoded pattern of uncoded spots,the first image, the second image, the relative positions of theprojector, the first camera, and the second camera, and a selectedplurality of intersection sets. This aspect of the element 12188 isillustrated in FIGS. 12B, 12C using an embodiment in which the processor12150 determines the 3D coordinates of a first collection of pointscorresponding to object spots 12121 on the object 12120 based at leastin the first uncoded pattern of uncoded spots 12111, the first image12136, the second image 12146, the relative positions of the projector12110, the first camera 12130, and the second camera 12140, and aselected plurality of intersection sets. An example from FIG. 12B of anintersection set is the set that includes the points 12112, 12134, and12144. Any two of these three points may be used to perform atriangulation calculation to obtain 3D coordinates of the illuminatedobject spot 12122 as discussed herein above in reference to FIGS. 12A,12B.

A second aspect of the method element 12188 includes selecting with theprocessor a plurality of intersection sets, each intersection setincluding a first spot, a second spot, and a third spot, the first spotbeing one of the uncoded spots in the projector reference plane, thesecond spot being one of the first-image spots, the third spot being oneof the second-image spots, the selecting of each intersection set basedat least in part on the nearness of intersection of a first line, asecond line, and a third line, the first line being a line drawn fromthe first spot through the projector perspective center, the second linebeing a line drawn from the second spot through the first-cameraperspective center, the third line being a line drawn from the thirdspot through the second-camera perspective center. This aspect of theelement 12188 is illustrated in FIG. 12B using an embodiment in whichone intersection set includes the first spot 12112, the second spot12134, and the third spot 12144. In this embodiment, the first line isthe line 12124, the second line is the line 12126, and the third line isthe line 12128. The first line 12124 is drawn from the uncoded spot12112 in the projector reference plane 12114 through the projectorperspective center 12116. The second line 12126 is drawn from thefirst-image spot 12134 through the first-camera perspective center12132. The third line 12128 is drawn from the second-image spot 12144through the second-camera perspective center 12142. The processor 12150selects intersection sets based at least in part on the nearness ofintersection of the first line 12124, the second line 12126, and thethird line 12128.

The processor 12150 may determine the nearness of intersection of thefirst line, the second line, and the third line based on any of avariety of criteria. For example, in an embodiment, the criterion forthe nearness of intersection is based on a distance between a first 3Dpoint and a second 3D point. In an embodiment, the first 3D point isfound by performing a triangulation calculation using the first imagepoint 12134 and the second image point 12144, with the baseline distanceused in the triangulation calculation being the distance between theperspective centers 12132 and 12142. In the embodiment, the second 3Dpoint is found by performing a triangulation calculation using the firstimage point 12134 and the projector point 12112, with the baselinedistance used in the triangulation calculation being the distancebetween the perspective centers 12134 and 12116. If the three lines12124, 12126, and 12128 nearly intersect at the object point 12122, thenthe calculation of the distance between the first 3D point and thesecond 3D point will result in a relatively small distance. On the otherhand, a relatively large distance between the first 3D point and thesecond 3D would indicate that the points 12112, 12134, and 12144 did notall correspond to the object point 12122.

As another example, in an embodiment, the criterion for the nearness ofthe intersection is based on a maximum of closest-approach distancesbetween each of the three pairs of lines. This situation is illustratedin FIG. 12D. A line of closest approach 12125 is drawn between the lines12124 and 12126. The line 12125 is perpendicular to each of the lines12124, 12126 and has a nearness-of-intersection length a. A line ofclosest approach 12127 is drawn between the lines 12126 and 12128. Theline 12127 is perpendicular to each of the lines 12126, 12128 and haslength b. A line of closest approach 12129 is drawn between the lines12124 and 12128. The line 12129 is perpendicular to each of the lines12124, 12128 and has length c. According to the criterion described inthe embodiment above, the value to be considered is the maximum of a, b,and c. A relatively small maximum value would indicate that points12112, 12134, and 12144 have been correctly selected as corresponding tothe illuminated object point 12122. A relatively large maximum valuewould indicate that points 12112, 12134, and 12144 were incorrectlyselected as corresponding to the illuminated object point 12122.

The processor 12150 may use many other criteria to establish thenearness of intersection. For example, for the case in which the threelines were coplanar, a circle inscribed in a triangle formed from theintersecting lines would be expected to have a relatively small radiusif the three points 12112, 12134, 12144 corresponded to the object point12122. For the case in which the three lines were not coplanar, a spherehaving tangent points contacting the three lines would be expected tohave a relatively small radius.

It should be noted that the selecting of intersection sets based atleast in part on a nearness of intersection of the first line, thesecond line, and the third line is not used in most otherprojector-camera methods based on triangulation. For example, for thecase in which the projected points are coded points, which is to say,recognizable as corresponding when compared on projection and imageplanes, there is no need to determine a nearness of intersection of theprojected and imaged elements. Likewise, when a sequential method isused, such as the sequential projection of phase-shifted sinusoidalpatterns, there is no need to determine the nearness of intersection asthe correspondence among projected and imaged points is determined basedon a pixel-by-pixel comparison of phase determined based on sequentialreadings of optical power projected by the projector and received by thecamera(s). The method element 12190 includes storing 3D coordinates ofthe first collection of points.

An alternative method that uses the intersection of epipolar lines onepipolar planes to establish correspondence among uncoded pointsprojected in an uncoded pattern is described in U.S. Pat. No. 9,599,455(′455) to Heidemann, et al., the contents of which are incorporated byreference herein. In an embodiment of the method described in patent′455, a triangulation scanner places a projector and two cameras in atriangular pattern. An example of a triangulation scanner 1300 havingsuch a triangular pattern is shown in FIG. 13. The triangulation scanner1300 includes a projector 1350, a first camera 1310, and a second camera1330 arranged in a triangle having sides A1-A2-A3. In an embodiment, thetriangulation scanner 1300 may further include an additional camera 1390not used for triangulation but to assist in registration andcolorization.

Referring now to FIG. 14 the epipolar relationships for a 3D imager(triangulation scanner) 1490 correspond with 3D imager 1300 of FIG. 13in which two cameras and one projector are arranged in the shape of atriangle having sides 1402, 1404, 1406. In general, the device 1, device2, and device 3 may be any combination of cameras and projectors as longas at least one of the devices is a camera. Each of the three devices1491, 1492, 1493 has a perspective center O1, O2, O3, respectively, anda reference plane 1460, 1470, and 1480, respectively. In FIG. 14, thereference planes 1460, 1470, 1480 are epipolar planes corresponding tophysical planes such as an image plane of a photosensitive array or aprojector plane of a projector pattern generator surface but with theplanes projected to mathematically equivalent positions opposite theperspective centers O1, O2, O3. Each pair of devices has a pair ofepipoles, which are points at which lines drawn between perspectivecenters intersect the epipolar planes. Device 1 and device 2 haveepipoles E12, E21 on the planes 1460, 1470, respectively. Device 1 anddevice 3 have epipoles E13, E31, respectively on the planes 1460, 1480,respectively. Device 2 and device 3 have epipoles E23, E32 on the planes1470, 1480, respectively. In other words, each reference plane includestwo epipoles. The reference plane for device 1 includes epipoles E12 andE13. The reference plane for device 2 includes epipoles E21 and E23. Thereference plane for device 3 includes epipoles E31 and E32.

In an embodiment, the device 3 is a projector 1493, the device 1 is afirst camera 1491, and the device 2 is a second camera 1492. Supposethat a projection point P3, a first image point P1, and a second imagepoint P2 are obtained in a measurement. These results can be checked forconsistency in the following way.

To check the consistency of the image point P1, intersect the planeP3-E31-E13 with the reference plane 1460 to obtain the epipolar line1464. Intersect the plane P2-E21-E12 to obtain the epipolar line 1462.If the image point P1 has been determined consistently, the observedimage point P1 will lie on the intersection of the determined epipolarlines 1462 and 1464.

To check the consistency of the image point P2, intersect the planeP3-E32-E23 with the reference plane 1470 to obtain the epipolar line1474. Intersect the plane P1-E12-E21 to obtain the epipolar line 1472.If the image point P2 has been determined consistently, the observedimage point P2 will lie on the intersection of the determined epipolarlines 1472 and 1474.

To check the consistency of the projection point P3, intersect the planeP2-E23-E32 with the reference plane 1480 to obtain the epipolar line1484. Intersect the plane P1-E13-E31 to obtain the epipolar line 1482.If the projection point P3 has been determined consistently, theprojection point P3 will lie on the intersection of the determinedepipolar lines 1482 and 1484.

It should be appreciated that since the geometric configuration ofdevice 1, device 2 and device 3 are known, when the projector 1493 emitsa point of light onto a point on an object that is imaged by cameras1491, 1492, the 3D coordinates of the point in the frame of reference ofthe 3D imager 1490 may be determined using triangulation methods.

Note that the approach described herein above with respect to FIG. 14may not be used to determine 3D coordinates of a point lying on a planethat includes the optical axes of device 1, device 2, and device 3 sincethe epipolar lines are degenerate (fall on top of one another) in thiscase. In other words, in this case, intersection of epipolar lines is nolonger obtained. Instead, in an embodiment, determining self-consistencyof the positions of an uncoded spot on the projection plane of theprojector and the image planes of the first and second cameras is usedto determine correspondence among uncoded spots, as described hereinabove in reference to FIGS. 12B, 12C, 12D, 12E.

FIGS. 15A, 15B, 15C, 15D, 15E are schematic illustrations of alternativeembodiments of the projector 1120. In FIG. 15A, a projector 1500includes a light source, mirror 1504, and diffractive optical element(DOE) 1506. The light source 1502 may be a laser, a superluminescentdiode, or a partially coherent LED, for example. The light source 1502emits a beam of light 1510 that reflects off mirror 1504 and passesthrough the DOE. In an embodiment, the DOE 11506 produces an array ofdiverging and uniformly distributed light spots 512. In FIG. 15B, aprojector 1520 includes the light source 1502, mirror 1504, and DOE 1506as in FIG. 15A. However, in the projector 1520 of FIG. 15B, the mirror1504 is attached to an actuator 1522 that causes rotation 1524 or someother motion (such as translation) in the mirror. In response to therotation 1524, the reflected beam off the mirror 1504 is redirected orsteered to a new position before reaching the DOE 1506 and producing thecollection of light spots 1512. In system 1530 of FIG. 15C, the actuatoris applied to a mirror 1532 that redirects the beam 1512 into a beam1536. Other types of steering mechanisms such as those that employmechanical, optical, or electro-optical mechanisms may alternatively beemployed in the systems of FIG. 15A, 15B, 15C. In other embodiments, thelight passes first through the pattern generating element 1506 and thenthrough the mirror 1504 or is directed towards the object space withouta mirror 1504.

In the system 1540 of FIG. 5D, an electrical signal is provided by theelectronics 1544 to drive a projector pattern generator 1542, which maybe a pixel display such as a Liquid Crystal on Silicon (LCoS) display toserve as a pattern generator unit, for example. The light 1545 from theLCoS display 1542 is directed through the perspective center 1547 fromwhich it emerges as a diverging collection of uncoded spots 1548. Insystem 1550 of FIG. 15E, a source is light 1552 may emit light that maybe sent through or reflected off of a pattern generating unit 1554. Inan embodiment, the source of light 1552 sends light to a digitalmicromirror device (DMD), which reflects the light 1555 through a lens1556. In an embodiment, the light is directed through a perspectivecenter 1557 from which it emerges as a diverging collection of uncodedspots 1558 in an uncoded pattern. In another embodiment, the source oflight 1562 passes through a slide 1554 having an uncoded pattern of dotsbefore passing through a lens 1556 and proceeding as an uncoded patternof light 1558. In another embodiment, the light from the light source1552 passes through a lenslet array 1554 before being redirected intothe pattern 1558. In this case, inclusion of the lens 1556 is optional.

The actuators 1522, 1534, also referred to as beam steering mechanisms,may be any of several types such as a piezo actuator, amicroelectromechanical system (MEMS) device, a magnetic coil, or asolid-state deflector.

FIG. 16A is an isometric view of a triangulation scanner 1600 thatincludes a single camera 1602 and two projectors 1604, 1606, thesehaving windows 1603, 1605, 1607, respectively. In the triangulationscanner 1600, the projected uncoded spots by the projectors 1604, 1606are distinguished by the camera 1602. This may be the result of adifference in a characteristic in the uncoded projected spots. Forexample, the spots projected by the projector 1604 may be a differentcolor than the spots projected by the projector 1606 if the camera 1602is a color camera. In another embodiment, the triangulation scanner 1600and the object under test are stationary during a measurement, whichenables images projected by the projectors 1604, 1606 to be collectedsequentially by the camera 1602. The methods of determiningcorrespondence among uncoded spots and afterwards in determining 3Dcoordinates are the same as those described earlier in FIG. 12 for thecase of two cameras and one projector. In an embodiment, thetriangulation scanner 1600 includes a processor 1102 that carries outcomputational tasks such as determining correspondence among uncodedspots in projected and image planes and in determining 3D coordinates ofthe projected spots.

FIG. 16B is an isometric view of a triangulation scanner 1620 thatincludes a projector 1622 and in addition includes three cameras: afirst camera 1624, a second camera 1626, and a third camera 1628. Theseaforementioned projector and cameras are covered by windows 1623, 1625,1627, 1629, respectively. In the case of a triangulation scanner havingthree cameras and one projector, it is possible to determine the 3Dcoordinates of projected spots of uncoded light without knowing inadvance the pattern of dots emitted from the projector. In this case,lines can be drawn from an uncoded spot on an object through theperspective center of each of the three cameras. The drawn lines mayeach intersect with an uncoded spot on each of the three cameras.Triangulation calculations can then be performed to determine the 3Dcoordinates of points on the object surface. In an embodiment, thetriangulation scanner 1620 includes the processor 1102 that carries outoperational methods such as verifying correspondence among uncoded spotsin three image planes and in determining 3D coordinates of projectedspots on the object.

FIG. 16C is an isometric view of a triangulation scanner 1640 like thatof FIG. 1A except that it further includes a camera 1642, which iscoupled to the triangulation scanner 1640. In an embodiment the camera1642 is a color camera that provides colorization to the captured 3Dimage. In a further embodiment, the camera 1642 assists in registrationwhen the camera 1642 is moved—for example, when moved by an operator orby a robot.

FIGS. 17A, 17B illustrate two different embodiments for using thetriangulation scanner 1 in an automated environment. FIG. 17Aillustrates an embodiment in which a scanner 1 is fixed in position andan object under test 1702 is moved, such as on a conveyor belt 1700 orother transport device. The scanner 1 obtains 3D coordinates for theobject 1702. In an embodiment, a processor, either internal or externalto the scanner 1, further determines whether the object 1702 meets itsdimensional specifications. In some embodiments, the scanner 1 is fixedin place, such as in a factory or factory cell for example, and used tomonitor activities. In one embodiment, the processor 1102 monitorswhether there is risk of contact with humans from moving equipment in afactory environment and, in response, issue warnings, alarms, or causeequipment to stop moving.

FIG. 17B illustrates an embodiment in which a triangulation scanner 1 isattached to a robot end effector 1710, which may include a mountingplate 1712 and robot arm 1714. The robot may be moved to measuredimensional characteristics of one or more objects under test. Infurther embodiments, the robot end effector is replaced by another typeof moving structure. For example, the triangulation scanner 1101 may bemounted on a moving portion of a machine tool.

FIG. 18 is a schematic isometric drawing of a measurement application1800 that may be suited to the triangulation scanners described hereinabove. In an embodiment, a triangulation scanner 1101 sends uncodedspots of light onto a sheet of translucent or nearly transparentmaterial 1810 such as glass. The uncoded spots of light 1802 on theglass front surface 1812 arrive at an angle to a normal vector of theglass front surface 1812. Part of the optical power in the uncoded spotsof light 1802 pass through the front surface 1812, are reflected off theback surface 1814 of the glass, and arrive a second time at the frontsurface 1812 to produce reflected spots of light 1804, represented inFIG. 18 as dashed circles. Because the uncoded spots of light 1802arrive at an angle with respect to a normal of the front surface 1812,the spots of light 1804 are shifted laterally with respect to the spotsof light 1802. If the reflectance of the glass surfaces is relativelyhigh, multiple reflections between the front and back glass surfaces maybe picked up by the triangulation scanner 1.

The uncoded spots of lights 1802 at the front surface 1812 satisfy thecriterion described with respect to FIG. 12 in being intersected bylines drawn through perspective centers of the projector and two camerasof the scanner. For example, consider the case in which in FIG. 12 theelement 1250 is a projector, the elements 1210, 1230 are cameras, andthe object surface 1270 represents the glass front surface 1270. In FIG.12, the projector 1250 sends light from a point 1253 through theperspective center 1258 onto the object 1270 at the position 1272. Letthe point 1253 represent the center of a spot of light 1802 in FIG. 18.The object point 1272 passes through the perspective center 1218 of thefirst camera onto the first image point 1220. It also passes through theperspective center 1238 of the second camera 1230 onto the second imagepoint 1235. The image points 1200, 1235 represent points at the centerof the uncoded spots 1802. By this method, the correspondence in theprojector and two cameras is confirmed for an uncoded spot 1802 on theglass front surface 1812. However, for the spots of light 1804 on thefront surface that first reflect off the back surface, there is noprojector spot that corresponds to the imaged spots. In other words, inthe representation of FIG. 12, there is no condition in which the lines1211, 1231, 1251 intersect in a single point 1272 for the reflected spot1204. Hence, using this method, the spots at the front surface may bedistinguished from the spots at the back surface, which is to say thatthe 3D coordinates of the front surface are determined withoutcontamination by reflections from the back surface. This is possible aslong as the thickness of the glass is large enough and the glass istilted enough relative to normal incidence. Separation of pointsreflected off front and back glass surfaces is further enhanced by arelatively wide spacing of uncoded spots in the projected uncodedpattern as illustrated in FIG. 18. Although the method of FIG. 18 wasdescribed with respect to the scanner 1, the method would work equallywell for other scanner embodiments such as the scanners 1600, 1620, 1640of FIGS. 16A, 16B, 16C, respectively.

Terms such as processor, controller, computer, DSP, FPGA are understoodin this document to mean a computing device that may be located withinan instrument, distributed in multiple elements throughout aninstrument, or placed external to an instrument.

While embodiments of the invention have been described in detail inconnection with only a limited number of embodiments, it should bereadily understood that the invention is not limited to such disclosedembodiments. Rather, the embodiments of the invention can be modified toincorporate any number of variations, alterations, substitutions orequivalent arrangements not heretofore described, but which arecommensurate with the spirit and scope of the invention. Additionally,while various embodiments of the invention have been described, it is tobe understood that aspects of the invention may include only some of thedescribed embodiments. Accordingly, the embodiments of the invention arenot to be seen as limited by the foregoing description but is onlylimited by the scope of the appended claims.

What is claimed is:
 1. A method comprising: performing, by a processingdevice, using a neural network, pattern recognition on an image torecognize a feature in the image; and performing, by the processingdevice, upscaling of the image to increase a resolution of the imagewhile maintaining the feature to generate an upscaled image.
 2. Themethod of claim 1, further comprising: capturing, using athree-dimensional scanner, the image by scanning an environment.
 3. Themethod of claim 1, further comprising: training the neural network,using a training set of images, to perform the pattern recognition andthe upscaling.
 4. The method of claim 3, wherein each set of thetraining set of images comprises an original image of a laser projectionpattern and a downscaled image of the laser projection pattern.
 5. Themethod of claim 4, wherein the training further comprises: comparing thedownscaled image to the original image.
 6. The method of claim 3,wherein the training set of images is associated with one environment.7. The method of claim 3, wherein the training set of images isassociated with at least two environments.
 8. The method of claim 1,wherein the processing device is disposed in a three-dimensional scannersuch that performing the image recognition and performing the upscalingare performed by the three-dimensional scanner.
 9. The method of claim1, wherein the neural network comprises an encoder and a decoder. 10.The method of claim 1, wherein the neural network utilizes a longshort-term memory.
 11. The method of claim 1, wherein the feature is atleast one of a pattern, a color, or a shape.
 12. A method comprising:training a neural network to perform image upscaling on images capturedby a three-dimensional triangulation scanner; capturing an image usingthe three-dimensional triangulation scanner; performing, by a processingdevice using the neural network, pattern recognition on the image; andperforming, by the processing device using the neural network, upscalingon the image without manipulating image data associated with the imageto generate an upscaled image.
 13. The method of claim 12, whereincapturing the image comprises scanning, by the three-dimensionaltriangulation scanner, an environment.
 14. The method of claim 12,wherein training the neural network comprises using a training set ofimages.
 15. The method of claim 14, wherein each set of the training setof images comprises an original image of a laser projection pattern anda downscaled image of the laser projection pattern.
 16. The method ofclaim 15, wherein the training further comprises: comparing thedownscaled image to the original image.
 17. The method of claim 14,wherein the training set of images is associated with one environment.18. The method of claim 14, wherein the training set of images isassociated with at least two environments.
 19. The method of claim 12,wherein the processing device is disposed in the three-dimensionaltriangulation scanner such that performing the image recognition andperforming the upscaling are performed by the three-dimensionaltriangulation scanner.
 20. The method of claim 12, wherein the neuralnetwork comprises an encoder and a decoder.
 21. The method of claim 12,wherein the neural network utilizes a long short-term memory.